#pragma once

#include <limine.h>
#include <stdint.h>
#include <stdbool.h>

// 打印所有Limine内存映射信息
void print_limine_memmap(void);

// 查找指定物理地址所在的内存区域
struct limine_memmap_entry* find_memmap_entry(uint64_t phys_addr);

// 检查物理地址是否在可用内存中
bool is_phys_addr_usable(uint64_t phys_addr);

// 获取第一个可用内存区域的地址
uint64_t get_first_usable_addr(void);

// 获取最大的可用内存区域
struct limine_memmap_entry* get_largest_usable_region(void);

